package com.topscomm.file;

/**
 * ffmpeg命令建造者
 * 
 * @description:
 * @author: donghang
 * @date: 2020年8月20日上午9:56:41
 * @modify:
 */
public class FFmpegCommandBuilder extends BaseCommandBuilder {

	public FFmpegCommandBuilder(String executePath) {
		super(executePath);
	}

	/**
	 * 源文件路径
	 * 
	 * @description:
	 * @param inputFilePath
	 * @return
	 * @author: donghang
	 * @date: 2020年8月20日上午9:57:41
	 * @modify:
	 */
	public FFmpegCommandBuilder inputFile(String inputFilePath) {
		if (inputFilePath != null) {
			this.commandList.add("-i");
			this.commandList.add(inputFilePath);
		}
		this.commandList.add("-c");
		this.commandList.add("copy");
		return this;
	}

	/**
	 * 输出目标路径
	 * 
	 * @description:
	 * @param outputFilePath
	 * @return
	 * @author: donghang
	 * @date: 2020年8月20日上午9:59:15
	 * @modify:
	 */
	public FFmpegCommandBuilder outputFileFile(String outputFilePath) {
		if (outputFilePath != null) {
			this.commandList.add(outputFilePath);
		}
		return this;
	}

	/**
	 * 覆盖文件
	 * 
	 * @description:
	 * @return
	 * @author: donghang
	 * @date: 2020年8月20日上午9:59:52
	 * @modify:
	 */
	public FFmpegCommandBuilder override() {
		this.commandList.add("-y");
		return this;
	}

	/**
	 * 输出格式化
	 * 
	 * @description:
	 * @param fileFormatEnum
	 * @return
	 * @author: donghang
	 * @date: 2020年8月20日上午10:07:47
	 * @modify:
	 */
	public FFmpegCommandBuilder formatOutput(String fileFormatEnum) {
		if (fileFormatEnum != null) {
			this.commandList.add("-f");
			this.commandList.add(fileFormatEnum);
		}
		return this;
	}

	/**
	 * 切片间隔
	 * 
	 * @description:
	 * @param second
	 * @return
	 * @author: donghang
	 * @date: 2020年8月20日上午10:08:44
	 * @modify:
	 */
	public FFmpegCommandBuilder duration(String second) {
		if (second != null) {
			this.commandList.add("-hls_time");
			this.commandList.add(second);
		}
		return this;
	}

	/**
	 * 设置帧大小
	 * 
	 * @description:
	 * @param size
	 * @return
	 * @author: donghang
	 * @date: 2020年8月20日上午10:09:23
	 * @modify:
	 */
	public FFmpegCommandBuilder size(String size) {
		if (size != null) {
			this.commandList.add("-s");
			this.commandList.add(size);
		}
		return this;
	}

	/**
	 * 
	 * @description:
	 * @return
	 * @author: donghang
	 * @date: 2020年8月20日上午10:11:27
	 * @modify:
	 */
	public FFmpegCommand build() {
		return new FFmpegCommand(this.commandList);
	}
}
